package bishiqiangxun;
import java.util.*;
public class Test3 {
    //笔试强训day38第三题 小红取数
    //算法 : 动态规划
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int n = in.nextInt();
        int k = in.nextInt();
        long[] arr = new long[n+1];
        //动态规划  dp[i][j] 表示 前i个字中 余数为j 的最大值
        for(int i =1; i<= n; i++) {
            arr[i] = in.nextLong();
        }

        long[][] dp = new long[n+1][k];
        for(int i=0;i<=n;i++){
            Arrays.fill(dp[i],Long.MIN_VALUE);
        }
        dp[0][0] = 0;
        for(int i = 1; i <= n; i++) {
            for(int j = 0; j < k; j++) {
                //有两种情况 一种是+ 当前的元素 一种是不加  看那个大
                //加了余数会变化
                dp[i][j] = Math.max(dp[i-1][j],dp[i-1][(int)((j+arr[i])%k)] + arr[i]);

            }
        }
        if(dp[n][0]<=0){
            System.out.println(-1);
        }
        else{
            System.out.println(dp[n][0]);
        }
    }
}
